﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Defero.Core.Entities;

namespace Defero.Core.DomainObjects
{
    /// <summary>
    /// Interfaz para el administrador de sesión.
    /// </summary>
    public interface IUser
    {
        /// <summary>
        /// Determina si el ususario esta autenticado
        /// </summary>
        bool IsAuthenticated { get; }
        /// <summary>
        /// Proyecto actual.
        /// </summary>
        Project CurrentProject { get; }
        /// <summary>
        /// Projectos a los que el usurio tiene asignacion.
        /// </summary>
        IList<Project> Assigments { get; }
        /// <summary>
        /// Información del usuario.
        /// </summary>
        User Info { get; }
        /// <summary>
        /// Determina si el usuario en el proyecto actual 
        /// pertenece a cierto rol.
        /// </summary>
        /// <param name="role">Rol.</param>
        bool IsInRole(ProjectRoles role);
        /// <summary>
        /// Determina si el usuario en el proyecto determinado
        /// pertenece a cierto rol.
        /// </summary>
        /// <param name="project">Proyecto</param>
        /// <param name="role">Rol</param>
        bool IsInRole(Project project, ProjectRoles role);
    }
}
